home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / ButtonCell.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  6.4 KB  |  278 lines

  1. package symantec.itools.db.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Event;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.Rectangle;
  9. import java.awt.image.ImageObserver;
  10.  
  11. public class ButtonCell implements TableCell, ImageObserver {
  12.    Grid view;
  13.    DataSource dataSource;
  14.    Coordinate coords;
  15.    boolean pressed;
  16.    boolean drawUp = true;
  17.    boolean defaultFlag;
  18.    int type;
  19.    static final int PADSIDES = 5;
  20.  
  21.    ButtonCell() {
  22.    }
  23.  
  24.    public ButtonCell(Grid var1, DataSource var2) {
  25.       this.view = var1;
  26.       this.dataSource = var2;
  27.    }
  28.  
  29.    public ButtonCell(int var1, int var2) {
  30.       this.coords = new Coordinate(var1 - 1, var2 - 1);
  31.    }
  32.  
  33.    public int type() {
  34.       return this.type;
  35.    }
  36.  
  37.    public int type(int var1) {
  38.       if (var1 <= 3 && var1 >= 0) {
  39.          return this.type = var1;
  40.       } else {
  41.          throw new IllegalArgumentException("Invalid cell type");
  42.       }
  43.    }
  44.  
  45.    public TableCell cloneCell() {
  46.       ButtonCell var1 = new ButtonCell(this.view, this.dataSource);
  47.       if (this.coords != null) {
  48.          var1.coords = new Coordinate(this.coords);
  49.       }
  50.  
  51.       var1.type = this.type;
  52.       var1.defaultFlag = this.defaultFlag;
  53.       return var1;
  54.    }
  55.  
  56.    public void setGrid(Grid var1, DataSource var2) {
  57.       this.view = var1;
  58.       this.dataSource = var2;
  59.    }
  60.  
  61.    public void setDefaultFlag() {
  62.       this.defaultFlag = true;
  63.    }
  64.  
  65.    public void reset() {
  66.       this.pressed = false;
  67.       this.drawUp = true;
  68.    }
  69.  
  70.    public void setCoordinates(Coordinate var1) {
  71.       this.coords = var1;
  72.    }
  73.  
  74.    public Coordinate getCoordinates() {
  75.       return this.coords;
  76.    }
  77.  
  78.    public int row() {
  79.       return this.coords.row;
  80.    }
  81.  
  82.    public void setRow(int var1) {
  83.       this.coords.row = var1;
  84.    }
  85.  
  86.    public int col() {
  87.       return this.coords.col;
  88.    }
  89.  
  90.    public void setCol(int var1) {
  91.       this.coords.col = var1;
  92.    }
  93.  
  94.    boolean inside(int var1, int var2) {
  95.       Rectangle var3 = this.view.getCellBounds(this);
  96.       return var1 > 0 && var2 > 0 && var1 < var3.width && var2 < var3.height;
  97.    }
  98.  
  99.    public boolean mouseEvent(Event var1) {
  100.       if (var1.id == 501) {
  101.          this.view.setCapture(this);
  102.          this.pressed = true;
  103.          this.drawUp = false;
  104.          this.view.generateEvent(var1, 50, this);
  105.          this.view.redrawCell(this);
  106.       } else if (var1.id == 506) {
  107.          if (this.inside(var1.x, var1.y) && this.drawUp) {
  108.             this.drawUp = false;
  109.             this.view.generateEvent(var1, 52, this);
  110.             this.view.redrawCell(this);
  111.          } else if (!this.inside(var1.x, var1.y) && !this.drawUp) {
  112.             this.drawUp = true;
  113.             this.view.generateEvent(var1, 53, this);
  114.             this.view.redrawCell(this);
  115.          }
  116.       } else if (var1.id == 502) {
  117.          if (this.pressed && !this.drawUp) {
  118.             this.view.generateEvent(var1, 51, this);
  119.          }
  120.  
  121.          this.pressed = false;
  122.          this.drawUp = true;
  123.          this.view.redrawCell(this);
  124.          this.view.lostCapture();
  125.       }
  126.  
  127.       return true;
  128.    }
  129.  
  130.    public Data getData() throws DataNotAvailable {
  131.       return this.dataSource.getData(this.coords);
  132.    }
  133.  
  134.    String chopString(String var1, FontMetrics var2, Rectangle var3) {
  135.       int var4 = var3.width;
  136.       int var5 = 1;
  137.       if (var1.length() == 0) {
  138.          return var1;
  139.       } else {
  140.          String var6;
  141.          do {
  142.             var6 = var1.substring(0, var5);
  143.          } while(var2.stringWidth(var6) < var4 - 10 && var5++ < var1.length());
  144.  
  145.          return var1.substring(0, var5 - 1);
  146.       }
  147.    }
  148.  
  149.    public void drawCell(Graphics var1, CellHints var2) {
  150.       Object var3;
  151.       try {
  152.          var3 = this.getData();
  153.       } catch (DataNotAvailable var11) {
  154.          var3 = new ImageStringData(this.dataSource, "");
  155.       }
  156.  
  157.       Rectangle var4 = var2.bounds();
  158.       FontMetrics var5 = var1.getFontMetrics();
  159.       var5.getAscent();
  160.       String var6 = this.chopString(((Data)var3).toString(), var5, var4);
  161.       int var7 = var5.stringWidth(var6);
  162.       int var8 = 0;
  163.       var1.getColor();
  164.       int var9 = var4.x;
  165.       this.drawButton(var1, var4);
  166.       Image var10 = ((Data)var3).toImage();
  167.       switch (var2.alignment()) {
  168.          case 0:
  169.             if (var10 != null) {
  170.                var8 = var10.getWidth(this) + 5;
  171.             }
  172.  
  173.             if (var8 + var7 + 2 + 5 <= var4.width && var10 != null) {
  174.                var4.x += 5;
  175.                var4.y += 3;
  176.                var1.drawImage(var10, var4.x, var4.y, this);
  177.                var4.y -= 3;
  178.             } else {
  179.                var8 = 5;
  180.             }
  181.  
  182.             var4.x = var9 + var8 + 2;
  183.             break;
  184.          case 1:
  185.             var4.x = var9 + (var4.width - var7) / 2;
  186.             break;
  187.          case 2:
  188.             if (var10 != null) {
  189.                var8 = var10.getWidth(this) + 5;
  190.             }
  191.  
  192.             if (var7 + var8 + 2 + 5 <= var4.width && var10 != null) {
  193.                var4.x = var4.x + var4.width - var7 - 5 - var8 - 2;
  194.                var4.y += 3;
  195.                var1.drawImage(var10, var4.x, var4.y, this);
  196.                var4.y -= 3;
  197.             }
  198.  
  199.             var4.x = var9 + var4.width - var7 - 5;
  200.       }
  201.  
  202.       var1.setColor(var2.foreground());
  203.       var1.drawString(var6, var4.x, var4.y + var5.getAscent() + 2);
  204.    }
  205.  
  206.    void drawButton(Graphics var1, Rectangle var2) {
  207.       Color var3 = Color.lightGray;
  208.       var1.setColor(var3);
  209.       var1.fillRect(var2.x, var2.y, var2.width - 1, var2.height);
  210.       var1.setColor(Color.gray);
  211.       var1.drawRect(var2.x + 1, var2.y + 1, var2.width - 3, var2.height - 3);
  212.       var1.setColor(Color.black);
  213.       var1.drawRect(var2.x, var2.y, var2.width - 1, var2.height - 1);
  214.       if (this.drawUp) {
  215.          var1.setColor(Color.white);
  216.          var1.drawLine(var2.x + 1, var2.y + 1, var2.x + var2.width - 2, var2.y + 1);
  217.          var1.drawLine(var2.x + 1, var2.y + 1, var2.x + 1, var2.y + var2.height - 2);
  218.       } else {
  219.          var1.setColor(Color.white);
  220.          var1.drawLine(var2.x + 1, var2.y + var2.height - 2, var2.x + var2.width - 2, var2.y + var2.height - 2);
  221.          var1.drawLine(var2.x + var2.width - 2, var2.y + 1, var2.x + var2.width - 2, var2.y + var2.height - 3);
  222.       }
  223.    }
  224.  
  225.    public boolean isCellTypeEditable() {
  226.       return false;
  227.    }
  228.  
  229.    public boolean actionEvent(Event var1) {
  230.       return true;
  231.    }
  232.  
  233.    public boolean keyEvent(Event var1) {
  234.       return true;
  235.    }
  236.  
  237.    public boolean canLoseFocus() {
  238.       return true;
  239.    }
  240.  
  241.    public boolean focusEvent(Event var1) {
  242.       if (var1.id == 1004) {
  243.          this.view.setCapture(this);
  244.          this.view.generateEvent(var1, 55, this);
  245.       } else {
  246.          this.view.lostCapture();
  247.          this.view.generateEvent(var1, 56, this);
  248.       }
  249.  
  250.       return true;
  251.    }
  252.  
  253.    public boolean loseFocusOnArrow() {
  254.       return false;
  255.    }
  256.  
  257.    public void activateCursor() {
  258.    }
  259.  
  260.    public void deactivateCursor() {
  261.    }
  262.  
  263.    public String stats() {
  264.       return "";
  265.    }
  266.  
  267.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  268.       if ((var2 & 192) != 0) {
  269.          return false;
  270.       } else if ((var2 & 32) != 0) {
  271.          this.view.redrawAsync();
  272.          return false;
  273.       } else {
  274.          return true;
  275.       }
  276.    }
  277. }
  278.